Dados obtidos do site Brasil.io. O qual disponibiliza não apenas os dados como também documentação, diversas visualizações dos dados, uma API de acesso além do código fonte de tudo.
URL direta dos dados: https://brasil.io/dataset/covid19/files/.
Data de download: 02/03/2021.
Carga dos dados.
dados <- read.csv("caso.csv", header = TRUE, stringsAsFactors = FALSE)
Vamos manter apenas os dados dos municípios do estado do Rio de Janeiro e vamos remover colunas que não serão utilizadas: state (é sempre RJ), place_type (é sempre city) e estimated_population_2019 (desatualizada).
Além disso, retirar os Importados/Indefinidos:
dados <- dados[dados$state == "RJ" & dados$place_type == "city", ]
dados <- dados[ , - c(2, 4, 9)] # state, place_type, estimated_population_2019
dados <- dados[dados$city != "Importados/Indefinidos", ]
Número de mortes por dia:
dados$deaths_day <- 0
municipios <- sort(unique(dados$city))
for (municipio in municipios) {
indices <- sort(dados[dados$city == municipio, "order_for_place"])
acumulado <- 0
for (indice in indices) {
mortes_no_dia <- dados[dados$city == municipio & dados$order_for_place == indice, "deaths"] - acumulado
dados[dados$city == municipio & dados$order_for_place == indice, "deaths_day"] <- mortes_no_dia
acumulado <- dados[dados$city == municipio & dados$order_for_place == indice, "deaths"]
}
}
Média de mortes por semana:
# seleciona apenas colunas de interesse
temp <- dados[ , c("date", "city", "estimated_population", "deaths_day")]
# todas as datas que existem no conjunto de dados
datas <- sort(unique(temp$date))
linha <- nrow(temp)
for (municipio in municipios) {
populacao <- unique(temp[temp$city == municipio, "estimated_population"])
for (data in datas) {
if (nrow(temp[temp$city == municipio & temp$date == data,]) == 0) {
linha <- linha + 1
temp[(linha), "date"] <- data
temp[(linha), "city"] <- municipio
temp[(linha), "estimated_population"] <- populacao
temp[(linha), "deaths_day"] <- 0
}
}
}
temp$week <- 0
datas <- sort(unique(temp$date))
# Para cada data o numero de sua semana
for (municipio in municipios) {
i <- 0
for (data in datas) {
temp[temp$city == municipio & temp$date == data, "week"] <- as.integer(i / 7) + 1
i <- i + 1
}
}
# Semanas, cidades e média de mortes de cada semana:
semanal <- data.frame(week = 0, city = "", mean_deaths_week = 0, estimated_population=0, stringsAsFactors = FALSE)
semanas <- sort(unique(temp$week))
i <- 1
for (municipio in municipios) {
for (semana in semanas) {
total <- sum(temp[temp$city == municipio & temp$week == semana, "deaths_day"])
linhas <- nrow(temp[temp$city == municipio & temp$week == semana, ])
semanal[i, "week"] <- semana
semanal[i, "city"] <- municipio
semanal[i, "mean_deaths_week"] <- total / linhas
i<- i + 1
}
semanal[semanal$city == municipio, "estimated_population"] <- unique(temp[temp$city == municipio, "estimated_population"])
}
Dados de Regiões de Saúde do Rio de Janeiro: